package com.ucode.model.cgms.convert;

import cn.hutool.core.util.NumberUtil;
import com.ucode.model.cgms.CgmsCompanionOrder;
import com.ucode.model.cgms.CgmsCompanionProduct;
import com.ucode.model.cgms.form.CgmsCompanionOrderCreateForm;
import com.ucode.model.cgms.vo.CgmsCompanionOrderVO;
import com.ucode.tool.base.Paginator;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

@Mapper
public interface CgmsCompanionOrderConvert {

    CgmsCompanionOrderConvert INSTANCE = Mappers.getMapper(CgmsCompanionOrderConvert.class);

    CgmsCompanionOrder convert(CgmsCompanionOrderCreateForm form);
    default CgmsCompanionOrder build(CgmsCompanionOrderCreateForm form, CgmsCompanionProduct cgmsCompanionProduct) {
        CgmsCompanionOrder companionOrder = convert(form);
        companionOrder.setZoneId(cgmsCompanionProduct.getZoneId());
        companionOrder.setCategoryId(cgmsCompanionProduct.getCategoryId());
        companionOrder.setProductId(cgmsCompanionProduct.getId());
        companionOrder.setTitle(cgmsCompanionProduct.getTitle());
        companionOrder.setSubTitle(cgmsCompanionProduct.getSubTitle());
        companionOrder.setPicUrl(cgmsCompanionProduct.getPicUrl());
        companionOrder.setMarketPrice(cgmsCompanionProduct.getMarketPrice());
        companionOrder.setPrice(cgmsCompanionProduct.getPrice());
        companionOrder.setCommissionRatio(cgmsCompanionProduct.getCommissionRatio());
        companionOrder.setRebateRatio(cgmsCompanionProduct.getRebateRatio());
        companionOrder.setPayPrice(NumberUtil.mul(cgmsCompanionProduct.getPrice(), form.getQuantity()));
        return companionOrder;
    }

    CgmsCompanionOrderVO convert(CgmsCompanionOrder bean);

    List<CgmsCompanionOrderVO> convertList(List<CgmsCompanionOrder> list);

    Paginator<CgmsCompanionOrderVO> convertPage(Paginator<CgmsCompanionOrder> page);

}


